/**
 *  @author :   JiGuangJie
 *  @date   :   2020/6/11
 *  @time   :   11:08
 *  @Email  :   530904731@qq.com
 */
// 给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
// 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
// 示例:
//     给定 nums = [2, 7, 11, 15], target = 9;
//     因为 nums[0] + nums[1] = 2 + 7 = 9;
//     所以返回 [0, 1];
/**
 * 思路：创建一个新的空数组，保存目标值和原数组中的数组差值，使用indexOf查找是否有相对应的值，如果有，则返回对应的下标值。没有，返回空数组
 */
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
let twoSum = function (nums, target) {
    let list = [];
    for (let i = 0; i < nums.length; i++) {
        const num = nums[i];
        const index = list.indexOf(num);
        if (index > -1) {
            return [index, i];
        }
        list.push(target - num);
    }
    return [];
};

let nums = [2, 7, 11, 15];
let target = 17;
console.time('tow-sum');
let result = twoSum(nums, target);
console.timeEnd('tow-sum');
console.log(result);
